package com.fone.player.entity;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * 
 * 媒体文件
 * 
 * @author wangyang
 * @since 2014年4月30日
 */
public class MediaFile implements Parcelable {

	/**
	 * 文件集合
	 */
	public static final String MEDIA_FILE_LIST = "media_file_list";
	// 文件Id
	private long mMediaFileId;
	// 文件名称(无后缀)
	private String mMediaFileName;
	// 文件名称(有后缀)
	private String mMediaFileNameSuffix;
	// 专辑名称
	private String mMediaFileAlbumName;
	// 父路径
	private String mMediaFileParentPath;
	// 文件绝对路径
	private String mMediaFilePath;
	// 艺术家
	private String mMediaFileArtistName;
	// 文件更改时间
	private long mMediaFileDateModified;
	// 文件时长
	private long mMediaFileDateDuration;
	// 文件大小
	private long mMediaFileSize;
	// 是否加密
	private boolean mMediaFileIsEncrypt;
	// 删除选中状态
	private boolean deleteSelected;
	// 文件加密时的时间
	private long mMediaFileEncryptTime;

	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeLong(mMediaFileId);
		out.writeString(mMediaFileName);
		out.writeString(mMediaFileNameSuffix);
		out.writeString(mMediaFileAlbumName);
		out.writeString(mMediaFileParentPath);
		out.writeString(mMediaFilePath);
		out.writeString(mMediaFileArtistName);
		out.writeLong(mMediaFileDateModified);
		out.writeLong(mMediaFileDateDuration);
		out.writeLong(mMediaFileSize);
		out.writeInt(mMediaFileIsEncrypt ? 1 : 0);
	}

	public static final Parcelable.Creator<MediaFile> CREATOR = new Parcelable.Creator<MediaFile>() {
		public MediaFile createFromParcel(Parcel in) {
			return new MediaFile(in);
		}

		public MediaFile[] newArray(int size) {
			return new MediaFile[size];
		}
	};

	private MediaFile(Parcel in) {
		mMediaFileId = in.readLong();
		mMediaFileName = in.readString();
		mMediaFileNameSuffix = in.readString();
		mMediaFileAlbumName = in.readString();
		mMediaFileParentPath = in.readString();
		mMediaFilePath = in.readString();
		mMediaFileArtistName = in.readString();
		mMediaFileDateModified = in.readLong();
		mMediaFileDateDuration = in.readLong();
		mMediaFileSize = in.readLong();
		mMediaFileIsEncrypt = in.readLong() == 1;
	}

	/**
	 * 
	 * 获取文件加密时的时间
	 * 
	 * @return long 文件加密时的时间
	 */
	public long getMediaFileEncryptTime() {
		return mMediaFileEncryptTime;
	}

	/**
	 * 
	 * 设置文件加密时的时间
	 * 
	 * @param mediaFileEncryptTime
	 *            文件加密时的时间
	 * @return void
	 */
	public void setMediaFileEncryptTime(long mediaFileEncryptTime) {

		mMediaFileEncryptTime = mediaFileEncryptTime;
	}

	/**
	 * 
	 * 获取加密状态
	 * 
	 * @return boolean 加密状态<br>
	 *         true 加密<br>
	 *         false 未加密
	 */
	public boolean getMediaFileIsEncrypt() {
		return mMediaFileIsEncrypt;
	}

	/**
	 * 
	 * 设置加密状态
	 * 
	 * @param isEncrypt
	 *            加密状态.true-加密, false-未加密.
	 * @return void
	 */
	public void setMediaFileIsEncrypt(boolean isEncrypt) {

		mMediaFileIsEncrypt = isEncrypt;
	}

	/**
	 * 
	 * 获取专辑名称
	 * 
	 * @return String 专辑名称
	 */
	public String getMediaFileAlbumName() {
		return mMediaFileAlbumName == null ? "" : mMediaFileAlbumName;
	}

	/**
	 * 
	 * 设置专辑名称
	 * 
	 * @param mediaFileAlbumName
	 *            专辑名称
	 * @return void
	 */
	public void setMediaFileAlbumName(String mediaFileAlbumName) {

		mMediaFileAlbumName = mediaFileAlbumName;
	}

	/**
	 * 
	 * 获取文件大小
	 * 
	 * @return long 文件大小,单位是字节
	 */
	public long getMediaFileSize() {
		return mMediaFileSize;
	}

	/**
	 * 
	 * 设置文件大小
	 * 
	 * @param mediaFileSize
	 *            文件大小
	 * @return void
	 */
	public void setMediaFileSize(long mediaFileSize) {

		mMediaFileSize = mediaFileSize;
	}

	/**
	 * 
	 * 获取文件ID
	 * 
	 * @return long 媒体库文件ID
	 */
	public long getMediaFileId() {
		return mMediaFileId;
	}

	/**
	 * 
	 * 设置文件ID
	 * 
	 * @param mediaFileId
	 *            媒体库文件ID
	 * @return void
	 */
	public void setMediaFileId(long mediaFileId) {

		mMediaFileId = mediaFileId;
	}

	/**
	 * 
	 * 获取文件名称(不带后缀名)
	 * 
	 * @return String 文件名
	 */
	public String getMediaFileName() {
		return mMediaFileName == null ? "" : mMediaFileName;
	}

	/**
	 * 
	 * 设置文件名称(不带后缀名)
	 * 
	 * @param mediaFileName
	 *            文件名
	 * @return void
	 */
	public void setMediaFileName(String mediaFileName) {

		mMediaFileName = mediaFileName;
	}

	/**
	 * 
	 * 获取文件名(带后缀名)
	 * 
	 * @return String 文件名
	 */
	public String getMediaFileNameSuffix() {
		return mMediaFileNameSuffix == null ? "" : mMediaFileNameSuffix;
	}

	/**
	 * 设置文件名(带后缀名)
	 * 
	 * @param mediaFileNameSuffix
	 *            文件名
	 * @return void
	 */
	public void setMediaFileNameSuffix(String mediaFileNameSuffix) {

		mMediaFileNameSuffix = mediaFileNameSuffix;
	}

	/**
	 * 
	 * 获取文件父路径
	 * 
	 * @return String 文件父路径
	 */
	public String getMediaFileParentPath() {
		return mMediaFileParentPath == null ? "" : mMediaFileParentPath;
	}

	/**
	 * 
	 * 设置文件父路径
	 * 
	 * @param mediaFileParentPath
	 *            文件父路径
	 * @return void
	 */
	public void setMediaFileParentPath(String mediaFileParentPath) {

		mMediaFileParentPath = mediaFileParentPath;
	}

	/**
	 * 
	 * 获取文件路径
	 * 
	 * @return String 文件路径
	 */
	public String getMediaFilePath() {
		return mMediaFilePath == null ? "" : mMediaFilePath;
	}

	/**
	 * 
	 * 设置文件路径
	 * 
	 * @param mediaFilePath
	 *            文件路径
	 * @return void
	 */
	public void setMediaFilePath(String mediaFilePath) {

		mMediaFilePath = mediaFilePath;
	}

	/**
	 * 
	 * 获取文件时长
	 * 
	 * @return String 文件时长
	 */
	public long getMediaFileDateDuration() {
		return mMediaFileDateDuration;
	}

	/**
	 * 
	 * 设置文件时长
	 * 
	 * @param mediaFileDateDuration
	 *            文件时长
	 * @return void
	 */
	public void setMediaFileDateDuration(long mediaFileDateDuration) {

		mMediaFileDateDuration = mediaFileDateDuration;
	}

	/**
	 * 
	 * 获取文件最后更改时间
	 * 
	 * @return long 最后的更改时间
	 */
	public long getMediaFileDateModified() {
		return mMediaFileDateModified;
	}

	/**
	 * 
	 * 设置文件最后更改时间
	 * 
	 * @param mediaFileDateModified
	 *            最后更改时间
	 * @return void
	 */
	public void setMediaFileDateModified(long mediaFileDateModified) {

		mMediaFileDateModified = mediaFileDateModified;
	}

	/**
	 * 
	 * 获取文件作者
	 * 
	 * @return String 作者
	 */
	public String getMediaFileArtistName() {
		return mMediaFileArtistName == null ? "" : mMediaFileArtistName;
	}

	/**
	 * 
	 * 设置文件作者
	 * 
	 * @param mediaFileArtistName
	 *            作者
	 * @return void
	 */
	public void setMediaFileArtistName(String mediaFileArtistName) {

		mMediaFileArtistName = mediaFileArtistName;
	}

	public MediaFile() {

	}

	@Override
	public int describeContents() {
		return 0;
	}

	public boolean isDeleteSelected() {
		return deleteSelected;
	}

	public void setDeleteSelected(boolean deleteSelected) {

		this.deleteSelected = deleteSelected;
	}

}
